#include "stm32f10x.h"

/*
	需要stm32f10x_WWDG.h固件库
    窗口看门狗
    与独立看门狗的区别是，窗口看门狗只能在一定的窗口期内喂狗，过早或过晚都会触发复位
    窗口看门狗时钟来源RCLK1(36MHz)，来自RCC时钟控制器，然后除以4096后通过预分频寄存器(WDGTB)
    看门狗控制寄存器(WWDG_CR)中前7位T0-T6为减数计数器，T7为启动位
    看门狗配置寄存器(WWDG_CFR[6:0])中存放窗口上限
    当计数器的值低于0x3f（0011 1111）时及窗口下限时触发中断
	看门狗状态寄存器(WWDG_SR)产生中断时第0位被置1，要手动置0
    窗口看门狗可以允许中断(早期唤醒中断EWI)，当允许中断时，在计数器计数到0x40时产生中断，可以在中断中喂狗防止复位
*/ 

void WWDG_Init(u16 rlr,u16 enableMax){	  
	NVIC_InitTypeDef NVIC_InitStruct;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
	
    WWDG_SetPrescaler(WWDG_Prescaler_8); //设置分频系数
    WWDG_SetWindowValue(enableMax);	//设置窗口上限
    WWDG_EnableIT();    //中断使能
	
	NVIC_InitStruct.NVIC_IRQChannel=WWDG_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
	NVIC_Init(&NVIC_InitStruct);
	
    WWDG_Enable(rlr);   //看门狗使能，同时设置初始值
}
